package com.aistar.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期工具类
 * 该类提供了日期的一系列的方法
 *  日期与文本的相互转换
 *  获得年月日时分秒
 *  两个日期的比较
 *  两个日期的相差的时间
 */
public class DateUtil {

    /**
     * 日期格式，年月日时分秒
     */
    public static final String PATTERN_YMDHMS ="yyyy-MM-dd HH:mm:ss";
    /**
     * 日期格式，年月日
     */
    public static final String PATTERN_YMD ="yyyy-MM-dd";
    /**
     * 日期格式，时分秒
     */
    public static final String PATTERN_HMS ="HH:mm:ss";




    /**
     * 字符串转换成日期对象
     * @param source    源字符表示的日期
     * @param dateParttern 日期转换格式
     * @return  返回日期对象
     */
    public static Date stringToDate(String source,String dateParttern){
        DateFormat df = new SimpleDateFormat(dateParttern);
        Date date =null;
        try {
            date = df.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return  date;
    }


    /**
     * 日期转换成字符串
     * @param date  要转换的日期对象
     * @param dateParttern 日期转换格式
     * @return  返回字符换表示的日期
     */
    public static String dateToString(Date date,String dateParttern){
       DateFormat df =  new SimpleDateFormat(dateParttern);
       String dateStr = df.format(date);
        return dateStr;
    }

    /**
     * 获得指定日期的年份
     * @param date  指定日期
     * @return  返沪对应日期的年份
     */
    public static int getYear(Date date){
        Calendar calendar = Calendar.getInstance();// 返回系统的日历时间
        calendar.setTime(date);  // 将指定date对象 转化成 对应的 Calendar 对象
        return calendar.get(Calendar.YEAR);

    }

    /**
     * 获得指定日期的月份
     * @param date  指定日期
     * @return  返沪对应日期的月份
     */
    public static int getMonth(Date date){
        Calendar calendar = Calendar.getInstance();// 返回系统的日历时间
        calendar.setTime(date);  // 将指定date对象 转化成 对应的 Calendar 对象
        return calendar.get(Calendar.MONTH);
    }



}
